package com.CodeBlock代码块;

public class CodeBlock细节2 {
    public static void main(String[] args) {
        Q  q1 = new Q();//第一次创建对象时加载Q类会调用静态代码块和普通代码块
        System.out.println("=====================");
        Q  q2 = new Q();//第二次创建对象时类已经被加载过了，不会再调用静态代码块
        //普通代码块每次在创建对象时就会被调用，



        System.out.println("\n\n=====================");
        System.out.println(W.n1);//当调用静态属性时会加载W类，调用静态代码块，不会调用普通代码块

    }
}
class Q{
    {//简单理解为：普通代码块只与构造器关联，调用构造器就会调用普通代码块
        System.out.println("Q  的普通代码块被调用");
    }
    static{
        System.out.println("Q  的静态代码块被调用");
    }
}

class W{
    public static int n1 = 0;
    {
        System.out.println("W  的普通代码块被调用");
    }
    static{
        System.out.println("W  的静态代码块被调用");
    }
}